1. Field of the Invention
The present invention relates to the field of data processing systems. specifically, the present invention relates to a method and system for binding an application to a memory address in a portable computer system.
2. Related Art
As the components required to build a computer system have reduced in size, new categories of computer systems have emerged. One of the more recent categories of computer systems is the xe2x80x9cpalmtopxe2x80x9d computer system, or personal digital assistant (PDA). A palmtop computer system is a computer that is small enough to be held in the hand of a user and is thus xe2x80x9cpalm-sized.xe2x80x9d As a result, palmtops are readily carried about in a briefcase or purse, and some palmtops are compact enough to fit into a person""s pocket. By virtue of their size, palmtop computer systems are also lightweight and so are exceptionally portable and convenient.
The portability and convenience of palmtops has made it increasingly desirable to increase the number and types of applications that can be run on them. It is advantageous to expand the capabilities of a palmtop so that it can provide many of the same, if not the same, services provided by a desktop or laptop computer system, particularly with regard to access to the World Wide Web as well as the ability to communicate with other palmtops and personal computers. As such, information currently available via the Internet over personal computers, such as on-line access to news and financial information, can also be provided via a palmtop. In addition, a palmtop can be used for electronic mail (xe2x80x9ce-mailxe2x80x9d) and multi-player gaming, and features such as voice recognition can also be added.
It has proven convenient to exchange applications between a computer system and a palmtop computer using a communication interface, such as a serial or parallel input port. Many palmtop computers also include an infrared communication port for transmitting data over a wireless link. Thus, mechanisms exist for transferring applications or other information from a computer system to a palmtop, or from one palmtop to another. Moreover, the palmtop can be linked to traditional desktop applications such as word processing and spreadsheet programs.
Many applications today utilize the well-known Component Object Model (COM) software architecture as well as other well-known architectures such as Common Object Request Broker Architecture (CORBA), Distributed COM (DCOM), and Distributed Computing Environment (DCE). COM is based on software objects or modules that are well encapsulated and accessed through interfaces (e.g., function calls) provided by services such as Object Linking and Embedding (OLE) and ActiveX. COM objects can interoperate with other COM components through their interfaces. In this way, COM allows applications to be built from different components.
The traditional model for generic, limited resource devices such as palmtops is that a memory image providing a certain set of abstract operating system services is built and installed on the device. With a COM-based architecture and other similar architectures, the operating system provides services supporting the execution of an application, in essence implementing interfaces (e.g., function calls) between various software components and modules when the application is called. A function call in essence works by transferring the execution of an application to another section of code that performs the function. After the function is performed, execution is transferred back to the application at the point where the function call was made.
When compared to a desktop computer system, a limitation associated with palmtops is that, with portability and convenience, there is a tradeoff in processing power and memory space. Innovative techniques may be available to store data and information more densely in smaller places. The processing issue can be addressed in part using processors that are smaller and faster than preceding generations. Still, for a given processor speed, it is desirable to develop methods and systems for improving the speed at which applications can be executed.
However, processing speed and hence the speed at which an application can be executed are slowed by having to implement the interfaces (e.g., function calls and required address translations) between the various applications and software component objects and modules in a COM-based software architecture (as well as architectures). The operating system must locate the section of code that performs the function, using a library call or system call (a COM call). The time it takes to search out and locate the function can appreciably slow down the speed at which the application is executed.
Accordingly, what is needed is a system or method for speeding up the execution of applications, in particular those applications that interface with other applications and software components and modules. The present invention provides this advantage and others not specifically mentioned above but described in the sections to follow.
A method and system are described for implementing an application on a computer system, in particular a portable computer system, by binding an interface (e.g., a function call and required address translations) in the application to a specific memory address. The application is installed on the computer system with a reference to a section of computer code. The reference is for transferring execution of the application to that section of computer code in order to perform a particular function. After a specified criterion or threshold is satisfied (e.g., after a certain period of time has elapsed), the reference is replaced with a specific memory address in the computer system""s memory map, such as a line number, thus binding the application and the operating system to that memory address for that function call. Accordingly, when the application makes a call to that function, the execution of the application can proceed directly to the line number where that function is located, instead of having to search out the location of the function using, for example, an address identifier scheme. As such, the call is completed more quickly, thereby speeding up the execution of the application and the operating system.
In the present embodiment, the application is downloaded onto a host device (e.g., a desktop) from a Web site, for example. The application is installed in a client device (e.g., a portable computer system or palmtop) at xe2x80x9csync timexe2x80x9d (the time at which the client and host computer systems synchronize with each other to share information such as applications and databases). After a specified criterion or threshold is satisfied, a reference in the application to a section of code (e.g., a library call, system call) is replaced with function call to a memory address (e.g., a line number) for that section of code.
In one embodiment, a copy of the application retaining the reference in the application is stored on the host device. After the specified criterion is satisfied, the application is bound on the host device by replacing the reference in the application with the memory address (e.g., line number). The application (now bound) is then reinstalled on the client device at sync time.
The installation must preclude the code involved from being subsequently moved. Thus, in one embodiment, the code is placed in readonly memory. Alternatively, the code is marked as not being movable.
In one embodiment, the specified criterion is based on the elapsed time since the application was initially installed on the client device. In another embodiment, the specified criterion is based on the elapsed time since the application was last transferred from the client device to another device (e.g., the time since the application was beamed from one portable computer system to another portable computer system). In still another embodiment, the specified criterion is based on the number of times the application is beamed from the client device to other portable computer systems.